package com.android.test

/**
 *
 *
 * 什么是 KMP？
 * KMP 是 Kotlin Multiplatform 的缩写，它是一种由 JetBrains 开发的跨平台技术方案。其核心思想是使用 Kotlin 语言和一套共享的 Kotlin 代码，来构建面向多个平台（如 iOS、Android、Web、桌面等）的应用程序。
 *
 * 与 Flutter、React Native 等框架不同，KMP 的核心是共享业务逻辑和数据处理代码，而非用户界面。
 * 核心哲学：逻辑共享，UI 原生
 * 这是理解 KMP 的关键。KMP 并不试图用一套代码去绘制所有平台的 UI。
 *
 * 共享的是什么？ 业务逻辑、数据模型、网络请求、数据存储、验证规则、状态管理、 analytics 等。这些是应用的核心，通常占代码量的 60%-80%，但平台差异性很小。
 *
 * 不共享的是什么？ 用户界面（UI） 和 平台特定的 API（如蓝牙、传感器、文件系统等）。这部分代码使用各平台的原生技术开发（Android 用 Kotlin/Java 和 Jetpack Compose，iOS 用 Swift/Obj-C 和 SwiftUI/UIKit，Web 用 JS/React 等）。
 *
 * 这样做的好处是：
 *
 * 保持原生体验：UI 是原生的，用户无法分辨出与纯原生应用的区别，体验和性能最佳。
 *
 * 最大化代码复用：避免了在多个平台重复实现相同的业务规则和逻辑，提高了开发效率，降低了维护成本和出错几率。
 *
 * 灵活的介入能力：开发者可以随时编写平台特定的代码来处理平台差异，提供了极大的灵活性。
 *
 * KMP 的技术架构：预期声明与实际实现
 * KMP 通过一种优雅的机制来实现“一次编写，多处运行”，这个机制的核心是 expect/actual 关键字。
 *
 * expect （预期声明）：在共享的通用代码模块中，你声明一个类、函数、接口或属性，并定义它应该有什么功能。这就像一个契约或接口。
 *
 * actual （实际实现）：在每个平台特定的代码模块（如 androidMain, iosMain) 中，你需要为这个预期声明提供具体的、使用平台原生技术实现的版本。
 *
 * 主要优势
 * 代码复用，效率提升：显著减少为不同平台编写相同逻辑的时间，团队可以更专注于创新和优化。
 *
 * 一致的业务逻辑：确保所有平台上的核心行为（如数据验证、计算规则）完全一致，避免因平台实现不同而产生的 Bug。
 *
 * 原生性能：共享的 Kotlin 代码编译为各平台的原生格式（JVM 字节码、原生二进制、JS），性能与直接手写原生代码无异。
 *
 * 强大的互操作性：可以轻松调用现有平台的原生代码和第三方库，便于增量集成到已有项目中。
 *
 * 降低维护成本：修复一个 Bug 或添加一个新特性，通常只需要修改共享代码即可应用到所有平台。
 *
 * JetBrains 和社区支持：背靠 JetBrains 和 Google，拥有活跃且不断增长的社区和丰富的库生态（如 Ktor, SQLDelight, Apollo KMP, Compose Multiplatform 等）。
 *
 * iOS 生态融入：Kotlin 编译到 iOS 平台是作为静态框架或 XCFramework 集成的。对于 iOS 开发者来说，它像一个黑盒，需要一定的学习成本来调试和集成。
 *
 * 并发模型差异：Kotlin/Native（用于 iOS 的编译目标）有自己的内存管理和并发模型（例如冻结对象、禁止跨线程共享可变状态），与 JVM 或 iOS 的 GCD 有所不同，需要开发者适应。
 *
 * 调试体验：调试跨平台代码，尤其是在 iOS 端，不如在 Android Studio 中调试 Android 或 Xcode 中调试 Swift 那么流畅。
 *
 * 包体积影响：引入 KMP 运行时库会略微增加应用的包体积。
 *
 * 学习曲线：团队需要学习 KMP 的概念、项目结构和最佳实践。
 *
 *  Created by zxn on 2025/9/4.
 **/
class KotlinMultiplatform {

}